package com.shopping.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.regex.Pattern;

public class FileUtils {
    private static final Pattern INVALID_CHARS = Pattern.compile("[\\\\/:*?\"<>|]");
    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");

    /**
     * 生成新的文件名
     * @param originalFilename 原始文件名
     * @return 新的文件名（时间戳_处理后的原始文件名）
     */
    public static String generateFileName(String originalFilename) {
        // 获取文件后缀
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        // 获取文件名（不含后缀）
        String name = originalFilename.substring(0, originalFilename.lastIndexOf("."));
        // 处理文件名中的特殊字符和空格
        name = INVALID_CHARS.matcher(name).replaceAll("_");
        name = name.replaceAll("\\s+", "_"); // 将空格替换为下划线
        // 如果文件名太长，截取前30个字符
        if (name.length() > 30) {
            name = name.substring(0, 30);
        }
        // 生成时间戳
        String timestamp = LocalDateTime.now().format(DATE_FORMATTER);
        // 返回新文件名
        return timestamp + "_" + name + suffix;
    }
}